/**
 * 柯里化
 */

// function checkAge (age) {
//   // 硬编码
//   let mini = 18
//   return age >= mini
// }

// 普通纯函数解决硬编码
// function checkAge (min, age) {
//   return age >= min
// }

// // 经常使用相同的输入18，会重复
// console.log(checkAge(18, 20))
// console.log(checkAge(18, 24))

// 高阶函数方式，应用闭包解决重复问题
// function checkAge (min) {
//   return function (age) {
//     return age >= min
//   }
// }

// const checkAge18 = checkAge(18)
// console.log(checkAge18(20))
// console.log(checkAge18(24))

// 柯里化：当函数有多个参数时对函数进行改造，调用一个函数只传入部分参数，这个函数会返回一个新的函数来接收剩余的参数

// ES6写法
const checkAge = (min: number) => ((age: number) => age >= min)
const checkAge18 = checkAge(18)
console.log(checkAge18(20))
console.log(checkAge18(24))




